package com.bsj.power.common.def.entity.user;

import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.bsj.crypt.annotation.SensitiveFiled;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Date;

/**
 * @author yinhao
 * @version 1.0
 * @description 用户
 * @date 2024/4/19
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName(value = "tab_user")
public class User extends Model<User> {

    /**
     * 用户Id主键
     */
    @TableId(value = "user_id", type = IdType.AUTO)
    private Long userId;
    /**
     * 用户名
     */
    @SensitiveFiled
    @TableField(value = "user_name")
    private String userName;
    /**
     * 密码
     */
    @SensitiveFiled
    @TableField(value = "password")
    private String password;
    /**
     * 上级ID
     */
    @TableField(value = "parent_id")
    private Long parentId;
    /**
     * 联系电话
     */
    @SensitiveFiled
    @TableField(value = "phone")
    private String phone;
    /**
     * 创建时间
     */
    @TableField("create_time")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;
    /**
     * 更新时间
     */
    @TableField("update_time")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;
    /**
     * 用户类型 0:系统自带用户 1:外部人员系统用户
     */
    @TableField(value = "user_type")
    private Integer userType;
    /**
     * 人员id
     */
    @TableField(value = "id")
    private String id;
    /**
     * 编号
     */
    @SensitiveFiled
    @TableField(value = "work_code")
    private String workCode;
    /**
     * 登录名
     */
    @SensitiveFiled
    @TableField("login_id")
    private String loginId;
    /**
     * 状态: 0试用 1正式 2临时 3试用延期 4解聘 5离职 6退休 7无效
     */
    @TableField("work_status")
    private String workStatus;
    /**
     * 人员名称
     */
    @TableField("last_name")
    private String lastName;
    /**
     * 性别
     */
    @TableField("sex")
    private String sex;
    /**
     * 邮箱
     */
    @TableField("email")
    private String email;
    /**
     * 办公电话
     */
    @TableField("telephone")
    private String telephone;
    /**
     * 移动电话
     */
    @TableField("mobile")
    private String mobile;
    /**
     * 是否允许访问   1是 2否 默认否
     */
    @TableField("is_access")
    private Integer isAccess;
    /**
     * 用户组id
     */
    @TableField("group_id")
    private Integer groupId;
    /**
     * 用户权重分为16级，1级最高，默认8级，admin为0
     */
    @TableField("user_weight")
    private Integer userWeight;
    /**
     * 最后登录时间（3个月及以上未使用的用户自动置为休眠状态，处于休眠状态的用户无法登录，可由系统管理员激活后使用）
     */
    @TableField("last_login_time")
    private Date lastLoginTime;
    /**
     * 首次登录时间（用户初次登录时，应用系统应强制要求修改初始口令，且前后修改的口令不能完全相同）
     */
    @TableField("first_login_time")
    private Date firstLoginTime;
    /**
     * 密码修改时间
     */
    @TableField("password_update_time")
    private Date passwordUpdateTime;
}
